Code On Time release 8.9.43.0 introduces embedded data providers, the enhanced TreeView, and the initial implementation of the Pages hierarchy in the App Studio.
Embedded Data Providers
The code generation library now includes the redistributable ADO.NET providers for Oracle and IBM DB2 iSeries.
Oracle ODP.NET
Oracle ODP.NET Managed Driver is a high-performance, scalable, and reliable ADO.NET provider for Oracle databases. It offers features like connection pooling, batching, asynchronous I/O, transaction support, connection failover, and data encryption. Designed for ease of use, it provides a consistent programming interface for accessing Oracle databases from .NET applications and supports all Oracle database features, including SQL, PL/SQL, and Oracle objects.
The app builder and its generated applications leverage the built-in Oracle ODP.NET Managed Driver for communicating with Oracle databases. Neither the development environment nor the deployment server needs additional software installations because all necessary managed driver components are included. With the knowledge of the Oracle database server's address and a valid username and password combination, building exceptional offline-capable online applications is made possible. These applications also provide a REST Level 3 API enhanced with hypermedia.
The app builder assists in adding the standard membership system to manage users and roles. Developers may also enhance their Oracle-based applications with the built-in content management system to keep track of the runtime configuration data, such as the user avatars, external identity providers, RESTful authorization data, and more.
IBM .NET DB2 iSeries
IBM DB2 iSeries is a reliable, scalable, and high-performance relational database management system (RDBMS) developed by IBM for use on its iSeries and System i servers. It supports both SQL and non-SQL access. DB2 iSeries is designed to provide high availability, even in the event of a hardware failure, and can scale to meet the needs of large organizations. It is known for its performance, even on large databases, and uses techniques such as in-memory caching and query optimization to achieve this.
The app builder now includes the IBM.Data.DB2.iSeries data provider, which enables database connections to IBM DB2 iSeries systems. However, to utilize the provider, the associated client connectivity software from IBM must be installed on both the workstation used for development and the server designated for production.
There is not built-in support for the membership management or content management system. Developers can put together their own user/role manager when needed.
Pages in App Studio
In the App Studio, developers have direct access to the application pages' hierarchy. To ensure that nothing is missing, check the navigation menu of your applications. Please keep in mind that the properties aren't saved yet. Pages with a single dataview don't show a separate container with a dataview node. Instead, the page's "controller" and "view" attributes can be accessed directly. The studio has categorized pages into "Content," "Data," "Link," and "Menu Item."
The User Controls of the legacy Project Designer are displayed under the Sippets node, which is available as the last node in the Pages hierarchy.
More functionality will be added to the Pages hierarchy in the upcoming releases.
Miscellaneous
The following bug fixes and product enhancements are included in this release:
- (MetaBuilder) The following Oracle-specific system schemas are excluded from the app metadata: XDB, SYSTEM, MDSYS, APEX_, CTXSYS, GSMADMIN_INTERNAL, WMSYS, ORDSYS, ORDDATA, OLAPSYS, LBACSYS.
- (OAuth2) The OAuth 2.0 handler will handle the situations when there is no response from the authorization server while trying to exchange the authorization code for an access token. Previously a cryptic error message was displayed in the browser. If the app is running on the "localhost" address, then the stack trace is also rendered.
- (ODP) Users will not be able to enter the associated detail records when creating a new master on the "offline" page, if the primary key of the master does not have a value. Offline Sync assigns automatic primary key values to the new record if the primary is an auto-incremental or Guid column. Users will be able to enter details in this case.
- (Model Builder) Capitalized table and column names are transformed to Camel notation when the models are created automatically.
- (OAuth) The read-only fields Auth Uri and Access Token Uri are displayed in the OAuth Identity Consumer form with the Protocol set to 'OAuth 2.0'..
- Integrated the Oracle ODP.NET in the code generation library. Now apps can be built for Oracle databases without installing any client software.
- (App Builder) IBD.Data.DB2.iSeries data provider is integrated in the app generator library. The DB2 driver v. 7.1.0 requires additional client components to allow connection to IBM DB2 iSeries databases. The ODP.NET allows connecting to any Oracle database including Oracle i23.
- (App Studio) The studio runtime recognizes project data requests with hypermedia parameters.
- (RESTful) The implementation of $app.restful will use the "query" parameters of the hypermedia segment when specified. Previously, only the non-hypermedia requests allowed specifying the query parameters.
- (TreeView) Adding of the template-based nodes inserts new nodes before the "placeholder" node to ensure correct sequence when multiple "iterate" responses are being added to the parent.
- (TreeView) Enhanced the node cloning with the option to define the property overrides. For example, the page hierarchy in the App Studio is using the cloned root page with an overridden "iterate" hypermedia path.
- (TreeView) Expansion of a node that has the pending dynamically loaded children will not remove the "collapse/expand" toggle from the node unless all nodes are resolved and there are no children.
- (Framework) The empty ResultSet returned by the data controller will not cause an exception when a filter is applied and the field names are not known.
- (TreeView) The node without 'iterate' definition will have its data inherited from the parent node if its 'inherited' key is set to true.
- (TreeView) Only a valid icon is assigned to the TreeView nodes. This included material-icon material-symbol or alta-numeric class names are supported.
- (TreeView) The node definition marked with the dynamic "terminal" expression will prevent the node from being displayed as expandable or replicate the node if the expression evaluates to "true". This allows creating hierarchies that do not require users to expand a node to find out if there are children.
- (RESTful) The engine adds the ?count=true parameter to the "children-" hypermedia controls.
- (RESTful) The engine uses the customizable "root" key instead of the hard-coded "root" in the path of the corresponding hypermedia control.
- (Framework) Filtering expressions are quoted if the expressions consist of the alpha-numeric characters only to avoid conflict of field names with the reserved words of the data engine.
- (RESTful) The "root-SELF_REFERRING_LOOKUP_FIELD hypermedia is added on any depth of the API. Previously only the root entry had this hypermedia control. Now the "root-" control is added on the first level of the hierarchy in the path.
- (Framework) Data controllers based on complex custom SELECT statements with the WHERE clause will not cause the app to produce an invalid SQL when the dynamic access control rules are specified or when the user is filtering a many-to-many field.